package com.itheima.common;


import com.itheima.exection.DeleteByIdDishCustomExection;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.multipart.MultipartFile;

import java.io.FileNotFoundException;
import java.sql.SQLIntegrityConstraintViolationException;

//此处创建一个全局异常处理器
//处理由于新增用户名已存在导致的错误
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

//    创建一个异常方法.拦截指定的异常
    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R doSQLIntegrityConstraintViolationException(SQLIntegrityConstraintViolationException e){
//        测试
        log.info("拦截异常方法{}",e.getMessage());
//        如果当前的异常信息是Duplicate entry,则返回对应的error内容

        if (e.getMessage().contains("Duplicate entry")){
//          此处提升msg的作用域,使其能够被直接返回
//            此处根据空格进行分割
            String[] split = e.getMessage().split(" ");
//            对消息进行拼接 获取第3个位置的信息
            String msg = split[2] + "已经存在";
//            进行返回
            return R.error(msg);

        }
        if (e.getMessage().contains("Column 'update_user' cannot be null")){
//            根据空格进行切割
            String[] split = e.getMessage().split(" ");
//            对异常消息进行拼接
            String msg = split[1] + "不能为空,请登录后在测试";
            return R.error(msg);
        }
//        如果不是该信息,则返回其他错误
        return R.error("未知异常");
    }

    @ExceptionHandler(DeleteByIdDishCustomExection.class)
    public R<String> doDeleteByIdDishCustomExection(DeleteByIdDishCustomExection ex){
        return R.error(ex.getMessage());
    }




}
